-- Lua 脚本: 限流策略判断当前限流是否成功

-- 参数列表：
-- KEYS[1]: 限流策略key (limit_strategy_key)
-- ARGV[1]: 限流次数 (limitCount)
-- ARGV[2]: 限流时间 (limitTime)
local key = KEYS[1]
local limitCount = tonumber(ARGV[1])
local limitTime = tonumber(ARGV[2])

-- 获取当前策略的限流次数, 如果为空则默认设置为0
local currentLimit = tonumber(redis.call("get", key) or "0")
--超过限流次数直接返回零，否则再走else分支
if currentLimit + 1 > limitCount
then return 0
else
    -- 自增长 1
    redis.call('INCRBY', key, 1)
    -- 设置过期时间
    redis.call('EXPIRE', key, limitTime)
    return currentLimit + 1
end